// 使用commentJS规范 module.exports = xxx / require()
// 使用express框架创建WEB服务器 
// npm i express
const express = require('express')
const app = express()

// 解决跨域 cors
// npm i cors 
const cors = require('cors')
// 解决跨域全部放行
app.use(cors())
// 静态资源托管
app.use(express.static('./public'))
// 解析post请求
app.use(express.urlencoded())

// 引入jwt
const jwt = require('jsonwebtoken')
const JWT_SECRET_KEY = 'JWT_SECRET_KEY'
// 自定义token全局验证中间件
const tokenTools = function (req, res, next) {
    // 如果路径是登录页不拦截
    if (req.path == '/user/login') {
        next()
        return
    }
    // 权限验证, 测试环境下不做验证,注释掉开启验证
    // if (true) {
    //     next()
    //     return
    // }
    // 执行token验证,需要先验证token 设置请求头
    let token = req.headers["token"]
    console.log(req.headers, token)
    try {
        let payload = jwt.verify(token, JWT_SECRET_KEY)
        req.tokenPload = payload
    } catch (err) {
        res.send({ code: 401, msg: '用户验证失败,请重新登录' })
        return
    }
    next()
}
// 使用中间件
app.use(tokenTools)

// 引入路由
app.use(require('./router/user'))
app.use(require('./router/index'))
app.use(require('./router/shopping'))
app.use(require('./router/circle'))
app.use(require('./router/me'))

// 模拟一条请求
app.get('/', (req, res) => {
    res.send({ code: 200, msg: 'success' })
})

app.listen(3030, () => {
    console.log('服务器启动成功');
})